class Solution {//和为k的子数组
public:
    int subarraySum(vector<int>& nums, int k) {//前缀和
        int n=nums.size(),cnt=0;
        unordered_map<int,int> hash;
        hash[0]=1;
        int sum=0;
        for(int i=0;i<n;i++){
            sum+=nums[i];//0-i的前缀和
            if(hash.count(sum-k)) cnt+=hash[sum-k];
            hash[sum]++;
        }
        return cnt;
    }
};